package com.hyhy.hycloud.uaa.repository;

import com.hyhy.hycloud.uaa.model.User;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.stereotype.Repository;

import java.util.Optional;

/**
 * 用户仓储接口
 *
 * @author Xuegui Yuan
 * @date 2018-09-20
 */
@Repository
public interface UserRepository extends MongoRepository<User, String> {

    /**
     * 通过用户名获取用户
     *
     * @param username 用户名
     * @return 用户
     */
    Optional<User> findByUsername(String username);

    /**
     * 通过手机号获取用户
     *
     * @param mobile 手机号
     * @return 用户
     */
    Optional<User> findByMobile(String mobile);

    /**
     * 根据用户名查询用户是否存在
     *
     * @param username 用户名
     * @return 存在 true 不存在 false
     */
    boolean existsByUsername(String username);

    /**
     * 根据手机号查询用户是否存在
     *
     * @param mobile 手机号
     * @return 存在 true 不存在 false
     */
    boolean existsByMobile(String mobile);

    /**
     * 根据账号查询用户是否存在
     *
     * @param username 用户名
     * @param mobile   手机号
     * @return 存在 true 不存在 false
     */
    boolean existsByUsernameOrMobile(String username, String mobile);

}
